package com.duobaoyu.dby.supply.common.biz.bo.order;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 同步订单
 *
 * @author fengshaoyu
 * @version 1.0.0
 * @date 2023/10/13 17:59
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class SyncOrderBO {

	/**
	 * 主键ID
	 */
	private Long id;
	/**
	 * 渠道编码
	 */
	private String channelCode;
	/**
	 * 渠道子单号
	 */
	private String channelOrderSn;
	/**
	 * 渠道父单号
	 */
	private String channelOrderParentSn;
	/**
	 * 渠道交易单号
	 */
	private String channelTradeOrderSn;
	/**
	 * 渠道订单总金额
	 */
	private BigDecimal channelOrderAmount;
	/**
	 * 渠道运费
	 */
	private Integer channelFreightAmount;
	/**
	 * 订单类型,0:普通、1:附件、2:赠品、3:延保
	 */
	private String orderType;
	/**
	 * 业务订单交易号(与供应链订单号一一对应)
	 */
	private String bizTradeSn;
	/**
	 * 供应链交易单号(与业务订单号一一对应)
	 */
	private String supplyTradeSn;
	/**
	 * 供应链订单号
	 */
	private String orderSn;
	/**
	 * 供应链订单号父单号
	 */
	private String orderParentSn;
	/**
	 * 0 代表拆分前订单 1代表拆分后订单
	 */
	private Integer parentType;
	/**
	 * 系统内部名称
	 */
	private String serverName;
	/**
	 * 展示来源渠道
	 */
	private String showServerName;
	/**
	 * 手机号/充值账号
	 */
	private String rechargeAccount;
	/**
	 * 下单失败原因
	 */
	private String failReason;
	/**
	 * 取消原因
	 */
	private String cancelReason;
	/**
	 * 备注信息
	 */
	private String orderRemark;
	/**
	 * 订单状态
	 */
	private Integer orderStatus;
	/**
	 * 订单标签: asyn-异步;sync-同步
	 */
	private String orderTag;
	/**
	 * 扩展字段
	 */
	private OrderExtendBO extendParam;
	/**
	 * 确认订单时间
	 */
	private LocalDateTime confirmOrderTime;
	/**
	 * 商户ID
	 */
	private String mchId;
	/**
	 * 用户ID
	 */
	private String userId;
	/**
	 * 状态变更时间
	 */
	private LocalDateTime statusChangeTime;
	/***
	 * 订单商品
	 */
	private List<OrderProduct> orderProductList;

	@Data
	@Builder
	@NoArgsConstructor
	@AllArgsConstructor
	@Accessors(chain = true)
	public static class OrderProduct {
		/**
		 * 主键
		 */
		private Long id;
		/**
		 * 供应链订单号
		 */
		private String orderSn;
		/**
		 * 渠道编码
		 */
		private String channelCode;
		/**
		 * 商品类型 :real->实物商品；call->话费快充商品；coupon->卡券；recharge->直充商品；call_slow->话费慢充商品；electricity_fees_slow->电费慢充商品
		 */
		private String productType;
		/**
		 * 仓储类型,1:保税区邮、2:香港直邮、3:国内、4:法国直邮、5:澳门直邮、6:欧洲直邮、7:澳洲直邮、8:韩国直邮、9:美国直邮、10:日本直邮、11:德国直邮、12:新西兰直邮
		 */
		private Integer repositoryType;
		/**
		 * 商品编码
		 */
		private String productCode;
		/**
		 * 渠道商品编码
		 */
		private String channelProductCode;
		/**
		 * SKU编码
		 */
		private String skuCode;
		/**
		 * 渠道SKU编码
		 */
		private String channelSkuCode;
		/**
		 * 渠道specId
		 */
		private String channelSpecId;
		/**
		 * 渠道供应商Id
		 */
		private String channelSupplierId;
		/**
		 * 三级类目ID
		 */
		private Long thirdClassifyId;
		/**
		 * 三级类目名称
		 */
		private String thirdClassifyName;
		/**
		 * SKU名称
		 */
		private String skuName;
		/**
		 * SKU展示图
		 */
		private String skuPic;
		/**
		 * 商品数量
		 */
		private Integer skuNum;
		/**
		 * 原价(面额)
		 */
		private BigDecimal originalPrice;
		/**
		 * 商品单位
		 */
		private String unit;
		/**
		 * 销售属性
		 */
		private String saleAttributes;
		/**
		 * 平台销售价格
		 */
		private BigDecimal platformSellPrice;
		/**
		 * 平台成本价格
		 */
		private BigDecimal platformPrice;
		/**
		 * 渠道商品实际支付金额
		 */
		private BigDecimal channelPayAmount;
		/**
		 * 到账金额
		 */
		private BigDecimal actualAmount;
		/**
		 * 税率
		 */
		private BigDecimal skuTaxRate;
		/**
		 * 品牌ID
		 */
		private Long brandId;
		/**
		 * 品牌名称
		 */
		private String brandName;
		/**
		 * 1对内，2不对内
		 */
		private Integer insideStatus;

		/**
		 * 扩展数据
		 */
		private OrderProductExtendBO extendData;
	}
}
